package ed2.fisico.projecao;

import ed2.base.Operacao;
import ed2.fisico.acesso.ColunaTupla;
import ed2.fisico.acesso.Tupla;

public class ProjecaoSimples implements Operacao {
	
	private Operacao operacao;
	private String[] campos;
	
	public ProjecaoSimples(Operacao operacao, String...campos) {
		this.operacao = operacao;
		this.campos = campos;
	}

	@Override
	public Operacao abrir() {
		operacao.abrir();
		return this;
	}

	@Override
	public Operacao ler() {
		Tupla tupla = (Tupla) operacao.ler();
		if(tupla == null)
			return null;
		
		Tupla tuplaResultante = new Tupla();
		//TODO Adicionar teste para verificar numero e nomes de colunas.
		for (int i = 0; i < campos.length; i++) {
			ColunaTupla colunaTupla = new ColunaTupla(campos[i], tupla.getValorCampo(campos[i]));
			tuplaResultante.adicionaColuna(colunaTupla);
		}
		return tuplaResultante;
	}

	@Override
	public Operacao fechar() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long calcularCusto() {
		// TODO Auto-generated method stub
		return 0;
	}

}
